package com.hzhc.service;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzhc.entity.TrainPlan;
import com.hzhc.utils.ResultUtil;
import com.hzhc.vo.CalendarVo;
import com.hzhc.vo.TrainPlanVo;
import org.apache.poi.ss.formula.functions.T;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 班列计划 服务类
 * </p>
 *
 * @author 1
 * @since 2024-05-29
 */
public interface TrainPlanService extends IService<TrainPlan> {

    List<TrainPlanVo> getTrainPlanList(Page<TrainPlanVo> page, TrainPlanVo vo);

    ResultUtil<T> addTrainPlan(TrainPlan plan);

    ResultUtil<T> updateTrainPlan(TrainPlan plan);

    ResultUtil<T> deleteTrainPlan(Long id);

    ResultUtil<T> updateChangeZl(Long id);

    List<TrainPlanVo> getAppTrainPlanList(Page<TrainPlanVo> page, TrainPlanVo vo);

    List<TrainPlanVo> selectInOutPortMonthList(TrainPlanVo vo);

    List<CalendarVo> getCalendar(TrainPlanVo vo);

    void exportMonthReport(TrainPlanVo vo, HttpServletRequest request, HttpServletResponse response);

    JSONObject getIndexTop();

    JSONObject getIndexCenter();

    JSONObject getIndexBottomPie();

    JSONObject getIndexCompanyRank();

    JSONArray getIndexColumn();

    ResultUtil<T> updateTrainPlanArea(TrainPlanVo vo);

    ResultUtil<T> updateSendNotice (TrainPlanVo vo);

    ResultUtil<T> wgTrainPlan(TrainPlanVo vo);

    List<TrainPlan> getXcPlanList();

    List<TrainPlanVo> getAppXcTrainPlanList(Page<TrainPlanVo> page, TrainPlanVo vo);

    List<TrainPlanVo> getWxTrainPlanList(Page<TrainPlanVo> page, TrainPlanVo vo);

    ResultUtil<T> updateFinishStatus(TrainPlanVo vo);

}
